package leetcode_字符串._06字符的统计;

/**
 * 环绕字符串中唯一的子字符串
 * 算法 :
 *   计算以字母为结尾的最大连续字串的个数
 *   最后把这些个数加起来 , 就是结果
 */
public class _467 {

    public int findSubstringInWraproundString(String p) {
        if (null == p || p.equals("")) {
            return 0;
        }
        // 以字母为结尾的最大字串
        int[] ints = new int[26];
        ints[p.charAt(0) - 'a'] = 1;
        // 计算连续字符串的个数
        int count = 1;
        for (int i = 1; i < p.length(); i++) {
            if (p.charAt(i) % 26 == (p.charAt(i - 1) + 1) % 26) {
                ++count;
            } else {
                count = 1;
            }
            ints[p.charAt(i) - 'a'] = Math.max(ints[p.charAt(i) - 'a'], count);
        }
        int ans = 0;
        for (int i : ints) {
            ans += i;
        }
        return ans;
    }
}
